import axios from 'axios';

// 获取 标签数据
const getTags = () => {
  return axios.get('/api/index3');
};
export default {
  namespace: 'bao', // 调用 model 的时候，通过命名空间调用，不要和其他的model同名

  state: {
    // 状态，跟 react 中的state类似，和redux中保存的state一样
    name: '包',
    tagList: [],
  },

  effects: {
    // 调用服务器接口, 获取数据
    // *fetchTags(a, b) {
    *fetchTags({ payload, callback }, { put, call }) {
      // 获取tags数据
      const res = yield call(getTags); // 因为是网络请求，会产生异步的效果，所以要加上 yield
      console.log('传过去的参数', payload);
      console.log('res Dva::', res.data);
      // 更新状态  就是 调用reducers, 并传递数据
      yield put({
        type: 'setTagsList', // 类似于 redux 中 action 的type
        payload: res.data.list,
      });
    },
  },

  reducers: {
    // 更新 state
    setTagsList(state, action) {
      return {
        // 因为 他是纯函数，所以 直接赋值就行了
        ...state,
        tagList: action.payload,
      };
    },
  },
};
